const express = require('express');
const path = require('path');
const fs = require('fs');
let app = express();
app.listen(3000);


// -----------------------------
// 引入 cookie-session
const cookieSession = require("cookie-session")



// 注册session中间件
app.use(cookieSession({
    name: "aaaa", // sessionID的名字
    keys: ["asfad", "wrq34"], //加密的秘钥
    maxAge: 1000 * 60 * 60 * 24 //过期时间 单位ms 

}))
// -------------------------------------



// post传参中间件
app.use(express.urlencoded({ extended: true }))
app.use(express.json())



// cookie和session只能在同一服务器内用（同源）

// 渲染登录界面
app.get("/login", (req, res) => {
    res.sendFile(path.join(__dirname, "./views/login.html"))
})



app.post("/login", (req, res) => {

    // 接收用户数据
    let { username, password } = req.body

    if (!username || !password) {
        res.send("请输入账号和密码")
        return
    }
    // console.log(username, password );





    // 数据库的数据
    let filepath = path.join(__dirname, "./data/persons.json")
    let persons = JSON.parse(fs.readFileSync(filepath, "utf-8"))
    // console.log(persons);



    // 做对比
    let index = persons.findIndex(item => {
        return username == item.username && password == item.password
    })

    if (index == -1) {
        res.send("用户名或密码不对")
        return
    }


    // 存储账号密码（向前端发送凭证）--------------------
    // req.session.k=v
    req.session.username = username






    res.send("登录成功")
})



app.get("/personal", (req, res) => {

    // 判断是否已登录（有凭证且没过期）
    // console.log( req.session);
    let { username }=req.session //-----------------
    // console.log( username);



    if(!username){
        res.send(`请先<a href="http://localhost:3000/login">登录</a>`)
        return
    }

    
    res.send(`<h1> 欢迎${username}</h1>`)
})